<template>
  <div>
    <Spin v-if="show" :size="size" fix>
      <div class="loader">
        <span>J</span>
        <span>O</span>
        <span>Y</span>
        <span>S</span>
        <span>I</span>
        <span>M</span>
        <div class="covers">
          <span />
          <span />
          <span />
          <span />
          <span />
          <span />
        </div>
      </div>
    </Spin>
  </div>
</template>
<script>
export default {
  name: 'JoysimLoading',
  props: {
    show: {
      type: Boolean,
      default: false
    },
    size: {
      type: String,
      default: 'large'
    }
  },
  data() {
    return {
    };
  }
};
</script>
<style scoped>

* {
  box-sizing: border-box;
  overflow: hidden;
}

body {
  padding-top: 10em;
  text-align: center;
}

.loader {
  position: relative;
  margin: auto;
  width: 300px;
  color: white;
  font-size: 250%;
  background: linear-gradient(180deg, #222 0, #444 100%);
  box-shadow: inset 0 5px 20px black;
  text-shadow: 5px 5px 5px rgba(0,0,0,0.3);
}

.loader:after {
  content: "";
  display: table;
  clear: both;
}

span {
  float: left;
  height: 100px;
  line-height: 120px;
  width: 50px;
}

.loader > span:nth-child(1) {
  border-left: 1px solid #444;
  border-right: 1px solid #222;
  color: #FF0000;
}
.loader > span:nth-child(2) {
  border-left: 1px solid #444;
  border-right: 1px solid #222;
  color: #FF34B3;
}
.loader > span:nth-child(3) {
  border-left: 1px solid #444;
  border-right: 1px solid #222;
  color: #FFFF00;
}
.loader > span:nth-child(4) {
  border-left: 1px solid #444;
  border-right: 1px solid #222;
  color: #EEB422;
}
.loader > span:nth-child(5) {
  border-left: 1px solid #444;
  border-right: 1px solid #222;
  color: #CDCD00;
}
.loader > span:nth-child(6) {
  border-left: 1px solid #444;
  border-right: 1px solid #222;
  color: #C0FF3E;
}

.covers {
  position: absolute;
  height: 100%;
  width: 100%;
}

.covers span {
  background: linear-gradient(180deg, #fff, #ddd 100%);
  animation: up 2s infinite;
}

@keyframes up {
  0%   { margin-bottom: 0; }
  16%  { margin-bottom: 100%; height: 20px; }
  50% { margin-bottom: 0; }
  100% { margin-bottom: 0; }
}

.covers span:nth-child(2) { animation-delay: .142857s; }
.covers span:nth-child(3) { animation-delay: .285714s; }
.covers span:nth-child(4) { animation-delay: .428571s; }
.covers span:nth-child(5) { animation-delay: .571428s; }
.covers span:nth-child(6) { animation-delay: .714285s; }

</style>
